home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
database
/
jbcalc10
/
jbprocs.prg
< prev
next >
Wrap
Text File
|
1988-01-16
|
4KB
|
79 lines
* JBPROCS.PRG
PARAMETERS JBKEYHIT
DO CASE
CASE JBKEYHIT$'0123456789.' && .AND. JBTYPE = " DEC "
IF JBOPER$'='
STORE JBCURR TO JBCURRA
STORE "0" TO JBCURR
STORE " " TO JBOPER
ENDIF
DO CASE
case jbcurr = "0." .AND. JBKEYHIT <> "."
STORE JBCURR+JBKEYHIT TO JBCURR
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
CASE JBCURR = "0" .AND. JBKEYHIT <> "."
STORE JBKEYHIT TO JBCURR
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
CASE JBCURR = "0" .AND. JBKEYHIT = "."
STORE "0." TO JBCURR
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
CASE LEN(JBCURR) = 1 .AND. JBKEYHIT = "."
STORE JBCURR+'.' TO JBCURR
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
CASE LEN(JBCURR) < 20
STORE JBCURR+JBKEYHIT TO JBCURR
call ascroll with chr(1),chr(1),chr(15),chr(JABTOP+3),chr(JABLEFT+5),chr(JABTOP+3),chr(JABLEFT+24)
@ JABTOP+3,JABLEFT+24 SAY JBKEYHIT
CASE LEN(JBCURR) >= 20
SET COLOR TO N*/W
@ JABTOP+3,JABLEFT+2 SAY "E"
SET COLOR TO N/W
ENDCASE
CASE LOWER(JBKEYHIT)=" √x" && .AND. JBTYPE = " DEC "
STORE IF(VAL(JBCURR)>=0,SQRT(VAL(JBCURR)),(-1*SQRT(-1*VAL(JBCURR))))TO JBCURR
STORE LTRIM(TRIM(STR(JBCURR,18,8))) TO JBCURR
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
CASE JBKEYHIT="LOG" && .AND. JBTYPE = " DEC "
STORE IF(VAL(JBCURR)>=0,LOG(VAL(JBCURR)),(-1*LOG(-1*VAL(JBCURR))))TO JBCURR
STORE LTRIM(TRIM(STR(JBCURR,18,8))) TO JBCURR
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
CASE JBKEYHIT='EXP' && .AND. JBTYPE = " DEC "
STORE IF(VAL(JBCURR)>=0,EXP(VAL(JBCURR)),(-1*EXP(-1*VAL(JBCURR))))TO JBCURR
STORE LTRIM(TRIM(STR(JBCURR,18,8))) TO JBCURR
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
CASE JBKEYHIT$' π ' && .AND. JBTYPE = " DEC "
STORE "3.142857143" TO JBCURR
@ JABTOP+3,JABLEFT+1 SAY SPACE(13)+JBCURR
CASE JBKEYHIT$'%' && .AND. JBTYPE = " DEC "
DO CASE
CASE LEN(JBCURR) >= 18 .AND. AT('.',JBCURR) = 0
CASE LEN(JBCURR) >= 18 .AND. AT('.',JBCURR) <> 0
CASE AT('.',JBCURR) = 0
DO CASE
CASE LEN(JBCURR) = 1
STORE "0.0"+SUBSTR(JBCURR,1,1) TO JBCURR
CASE LEN(JBCURR) = 2
STORE "0."+SUBSTR(JBCURR,1,2) TO JBCURR
CASE LEN(JBCURR) = 3
STORE SUBSTR(JBCURR,1,1)+'.'+SUBSTR(JBCURR,2,2) TO JBCURR
OTHERWISE
STORE SUBSTR(JBCURR,1,LEN(JBCURR)-2)+'.'+SUBSTR(JBCURR,LEN(JBCURR)-2,LEN(JBCURR)) TO JBCURR
ENDCASE
CASE AT('.',JBCURR) >= 3
STORE AT('.',JBCURR) TO JBPOS
STORE SUBSTR(JBCURR,1,LEN(JBCURR)-(LEN(JBCURR)-(JBPOS-3)))+'.'+SUBSTR(JBCURR,JBPOS-2,2)+SUBSTR(JBCURR,JBPOS+1) TO JBCURR
CASE AT('.',JBCURR) = 2
STORE AT('.',JBCURR) TO JBPOS
IF SUBSTR(JBCURR,1,1) = "0"
STORE "0.0"+SUBSTR(JBCURR,1,1)+SUBSTR(JBCURR,JBPOS+1) TO JBCURR
ELSE
STORE "0.0"+SUBSTR(JBCURR,1,1)+SUBSTR(JBCURR,JBPOS+1) TO JBCURR
ENDIF
CASE AT('.',JBCURR) = 1
STORE AT('.',JBCURR) TO JBPOS
STORE "0.00"+SUBSTR(JBCURR,1,JBPOS-1)+SUBSTR(JBCURR,JBPOS+1,LEN(JBCURR)) TO JBCURR
ENDCASE
@ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
ENDCASE
RETURN